package com.atguigu.gulimall.product;


import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
 * 逻辑删除
 *  1)配置全局的逻辑删除规则(可省略)
 *  2)配置逻辑删除的组件Bean(可省略)
 *  3)给Bean加上注解@TableLogic(value="1",delval="0")  或者在yml配置   这里推荐用前面那种方式,因为在yml配置时,是全局配置,容易影响其他表
 */

/**
 * JSR303
 *  1) 给Bean添加效验注解: javax.validation.constraints,并定义自己的message提示
 *  2) 开启校验功能  在controller参数里面添加@Valid
 *      效果: 校验错误以后会有默认的响应
 *  3) 给校验的bean后紧跟一个BindingResult, 就可以获取到校验的结果
 *
 *  统一异常处理
 * @ControllerAdvice
 *   1) 编写异常处理类,使用@ControllerAdvice
 *   2) 使用@ExceptionHandler 标注方法可以处理的异常
 *
 *  分组校验
 *      1) @NotBlank(message = "品牌名必须提交!", groups = {AddGroup.class, UpdateGroup.class})
 *          给校验注解标注什么情况需要进行校验
 *      2) @Validated({AddGroup.class})
 *      3) 默认没有制定分组的效验注解@NotBlank, 在分组效验情况@Validated({AddGroup.class})不生效
 *
 *   自定义效验
 *      1) 编写一个自定义的效验注解
 *      2) 编写一个自定义的效验器
 *      3) 关联自定义的效验器
 */

@EnableDiscoveryClient
@MapperScan("com.atguigu.gulimall.product.dao")
@SpringBootApplication
public class GulimallProductApplication {

    public static void main(String[] args) {
        SpringApplication.run(GulimallProductApplication.class, args);
    }
}
